package br.com.fiap.vendas.business.delegate;

import br.com.fiap.vendas.business.exception.ServiceException;
import br.com.fiap.vendas.business.service.interfaces.PedidoService;
import br.com.fiap.vendas.business.vo.PedidoVO;
import br.com.fiap.vendas.common.locator.ServiceLocator;

import java.math.BigDecimal;
import java.util.List;

/**
 * Created by jeferson on 1/26/14.
 */
public class PedidoDelegate {

    private ServiceLocator locator;
    private PedidoService pedidoService;

    public PedidoDelegate() {
        this.locator = ServiceLocator.getInstance();
    }

    private PedidoService getService() {
        if (this.pedidoService == null) {
            this.pedidoService = (PedidoService) locator
                    .lookup(PedidoService.JNDI_NAME);
        }
        return pedidoService;
    }

    public void inserirPedido(PedidoVO pedidoVO) throws ServiceException {

        getService().inserirPedido(pedidoVO);

    }

    public Integer inserirPedidoAssincrono(PedidoVO pedidoVO) throws ServiceException {

        return getService().inserirPedidoAssincrono(pedidoVO);

    }

    public List<PedidoVO> listarPedidos() throws ServiceException {
        return getService().buscarPedidos();
    }

    public List<PedidoVO> buscarPedidosReservados() {
        return getService().localizarPedidosReservados();
    }

    public List<PedidoVO> buscarPedidosPorValor(BigDecimal valor) {
        return getService().localizarProdutosPorValor(valor);
    }

    public PedidoVO localizarPedido(Integer idPedido) {
        return getService().localizarPedidoPorId(idPedido);
    }


}
